package com.tanhua.server.controller;

import com.alibaba.fastjson.JSON;
import com.tanhua.domain.db.User;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.server.service.UserService;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.swing.*;
import java.util.Date;
import java.util.Map;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

//    上传头像
//    1、请求方式  POST
//    2、请求路径  /user/loginReginfo/head
//    3、请求的数据格式文件类型的  headPhoto   还要注意请求头上也有参数
//    4、返回结果  无
    @PostMapping(value = "/loginReginfo/head",name = "上传头像")
    public ResponseEntity loginReginfoHead(MultipartFile headPhoto) throws Exception{
        return userService.loginReginfoHead(headPhoto);
    }


//    填写用户资料

//    1、请求方式  POST
//    2、请求路径  /user/loginReginfo
//    3、请求的数据格式以及内容  application/json 还要注意请求头上也有参数
//    4、返回结果  无
    @PostMapping(value = "/loginReginfo",name = "填写用户资料")
    public ResponseEntity loginReginfo(@RequestHeader("Authorization") String token, @RequestBody UserInfo userInfo) throws Exception{
        return userService.loginReginfo(token,userInfo);
    }


//    1、请求方式  POST
//    2、请求路径  /user/login
//    3、请求的数据格式以及内容  application/json  {“phone”：“13800138000”}
//    4、返回结果  无

    @PostMapping(value = "/login",name = "登录第一步，发送短信验证码")
    public ResponseEntity sendCode(@RequestBody Map param) throws Exception{
        String phone = (String) param.get("phone");
        return userService.sendCode(phone);
    }



//    1、请求方式  POST
//    2、请求路径  /user/loginVerification
//    3、请求的数据格式以及内容  application/json  {"phone"："13800138000","verificationCode":"手动输入的验证码"}
//    4、返回结果  {"token":"字符串",isNew:true}
    @PostMapping(value = "/loginVerification",name = "登录第二步，校验验证码")
    public ResponseEntity loginVerification(@RequestBody Map param) throws Exception{
        String phone = (String) param.get("phone");
        String verificationCode = (String) param.get("verificationCode");
        return userService.loginVerification(phone,verificationCode);
    }





//    要求： 0、请求地址 /user/save
//           1、请求方式是post
//          2、传递的参数是application/json类型
//          3、参数是 {"mobile":"13800138000","password":"123456"}
//          4、返回结果是这个用户的id  Long
//    @RequestMapping(value = "/user/save",method = RequestMethod.POST)
    @PostMapping(value = "/save",name = "保存用户")
    public ResponseEntity saveUser(@RequestBody  Map param){
       String mobile = (String) param.get("mobile");
       String password = (String) param.get("password");
       return userService.saveUser(mobile,password);
    }

    @GetMapping(value = "/findByMobile",name = "根据手机号查询用户")
    public ResponseEntity findByMobile(String mobile){
        return userService.findByMobile(mobile);
    }

    @GetMapping(value = "/findByMobile1",name = "根据手机号查询用户")
    public ResponseEntity findByMobile1(String mobile){
        User user = new User();
        user.setMobile(mobile);
        user.setId(100L);
        return ResponseEntity.status(201).body(user);
    }
    @GetMapping(value = "/findByMobile2",name = "根据手机号查询用户")
    public User findByMobile2(String mobile){
        User user = new User();
        user.setMobile(mobile);
        user.setId(100L);
        return user;
    }
}
